package com.cwnu.sw.cys.core.common.utils;


import com.cwnu.sw.cys.core.common.domain.dto.ReqInfo;

/**
 * @author jisam
 * @version 1.0
 * @contact "jisamchan@outlook.com"
 * @date 24/03/2025
 * @description 线程安全的请求信息持有类，通过ThreadLocal实现请求上下文在当前线程内的存储与访问
 */
public class RequestHolder {

    private static final ThreadLocal<ReqInfo> THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 设置当前线程的请求信息
     * @param requestInfo 需要存储的请求信息对象
     */
    public static void set(ReqInfo requestInfo) {
        THREAD_LOCAL.set(requestInfo);
    }

    /**
     * 获取当前线程的请求信息
     * @return 当前线程关联的请求信息对象，可能为null
     */
    public static ReqInfo get() {
        return THREAD_LOCAL.get();
    }

    /**
     * 清除当前线程的请求信息
     */
    public static void remove() {
        THREAD_LOCAL.remove();
    }
}
